diff --git a/system/helpers/download_helper.php b/system/helpers/download_helper.php
new file mode 100644
index 0000000..8d9fee4
--- /dev/null
+++ b/system/helpers/download_helper.php
@@ -0,0 +1,96 @@
+<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * Code Igniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package		CodeIgniter
+ * @author		Rick Ellis
+ * @copyright	Copyright (c) 2006, pMachine, Inc.
+ * @license		http://www.codeignitor.com/user_guide/license.html 
+ * @link		http://www.codeigniter.com
+ * @since		Version 1.0
+ * @filesource
+ */
+ 
+// ------------------------------------------------------------------------
+
+/**
+ * Code Igniter Download Helpers
+ *
+ * @package		CodeIgniter
+ * @subpackage	Helpers
+ * @category	Helpers
+ * @author		Rick Ellis
+ * @link		http://www.codeigniter.com/user_guide/helpers/download_helper.html
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * Force Download
+ *
+ * Generates headers that force a download to happen
+ *
+ * @access	public
+ * @param	string	filename
+ * @param	mixed	the data to be downloaded
+ * @return	void
+ */	
+function force_download($filename = '', $data = '')
+{
+	if ($filename == '' OR $data == '')
+	{
+		return FALSE;
+	}
+
+	// Try to determine if the filename includes a file extension.
+	// We need it in order to set the MIME type
+	if (FALSE === strpos($filename, '.'))
+	{
+		return FALSE;
+	}
+	
+	// Grab the file extension
+	$x = explode('.', $filename);
+	$extension = end($x);
+
+	// Load the mime types
+	@include(APPPATH.'config/mimes'.EXT);
+	
+	// Set a default mime if we can't find it
+	if ( ! isset($mimes[$extension]))
+	{
+		$mime = 'application/octet-stream';
+	}
+	else
+	{
+		$mime = (is_array($mimes[$extension])) ? $mimes[$extension][0] : $mimes[$extension];
+	}
+	
+	// Generate the server headers
+	if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE"))
+	{
+		header('Content-Type: "'.$mime.'"');
+		header('Content-Disposition: inline; filename="'.$filename.'"');
+		header('Expires: 0');
+		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
+		header("Content-Transfer-Encoding: binary");
+		header('Pragma: public');
+		header("Content-Length: ".strlen($data));
+	} 
+	else 
+	{
+		header('Content-Type: "'.$mime.'"');
+		header('Content-Disposition: attachment; filename="'.$filename.'"');
+		header("Content-Transfer-Encoding: binary");
+		header('Expires: 0');
+		header('Pragma: no-cache');
+		header("Content-Length: ".strlen($data));
+	}
+	
+	echo $data;
+}
+
+
+?>
\ No newline at end of file
